↳ Prolog
↳ PrologToPiTRSProof
sublist_in_gg(X, Y) → U3_gg(X, Y, append1_in_aag(P, X1, Y))
append1_in_aag([], Ys, Ys) → append1_out_aag([], Ys, Ys)
append1_in_aag(.(X, Xs), Ys, .(X, Zs)) → U1_aag(X, Xs, Ys, Zs, append1_in_aag(Xs, Ys, Zs))
U1_aag(X, Xs, Ys, Zs, append1_out_aag(Xs, Ys, Zs)) → append1_out_aag(.(X, Xs), Ys, .(X, Zs))
U3_gg(X, Y, append1_out_aag(P, X1, Y)) → U4_gg(X, Y, append2_in_agg(X2, X, P))
append2_in_agg([], Ys, Ys) → append2_out_agg([], Ys, Ys)
append2_in_agg(.(X, Xs), Ys, .(X, Zs)) → U2_agg(X, Xs, Ys, Zs, append2_in_agg(Xs, Ys, Zs))
U2_agg(X, Xs, Ys, Zs, append2_out_agg(Xs, Ys, Zs)) → append2_out_agg(.(X, Xs), Ys, .(X, Zs))
U4_gg(X, Y, append2_out_agg(X2, X, P)) → sublist_out_gg(X, Y)
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
sublist_in_gg(X, Y) → U3_gg(X, Y, append1_in_aag(P, X1, Y))
append1_in_aag([], Ys, Ys) → append1_out_aag([], Ys, Ys)
append1_in_aag(.(X, Xs), Ys, .(X, Zs)) → U1_aag(X, Xs, Ys, Zs, append1_in_aag(Xs, Ys, Zs))
U1_aag(X, Xs, Ys, Zs, append1_out_aag(Xs, Ys, Zs)) → append1_out_aag(.(X, Xs), Ys, .(X, Zs))
U3_gg(X, Y, append1_out_aag(P, X1, Y)) → U4_gg(X, Y, append2_in_agg(X2, X, P))
append2_in_agg([], Ys, Ys) → append2_out_agg([], Ys, Ys)
append2_in_agg(.(X, Xs), Ys, .(X, Zs)) → U2_agg(X, Xs, Ys, Zs, append2_in_agg(Xs, Ys, Zs))
U2_agg(X, Xs, Ys, Zs, append2_out_agg(Xs, Ys, Zs)) → append2_out_agg(.(X, Xs), Ys, .(X, Zs))
U4_gg(X, Y, append2_out_agg(X2, X, P)) → sublist_out_gg(X, Y)
SUBLIST_IN_GG(X, Y) → U3_GG(X, Y, append1_in_aag(P, X1, Y))
SUBLIST_IN_GG(X, Y) → APPEND1_IN_AAG(P, X1, Y)
APPEND1_IN_AAG(.(X, Xs), Ys, .(X, Zs)) → U1_AAG(X, Xs, Ys, Zs, append1_in_aag(Xs, Ys, Zs))
APPEND1_IN_AAG(.(X, Xs), Ys, .(X, Zs)) → APPEND1_IN_AAG(Xs, Ys, Zs)
U3_GG(X, Y, append1_out_aag(P, X1, Y)) → U4_GG(X, Y, append2_in_agg(X2, X, P))
U3_GG(X, Y, append1_out_aag(P, X1, Y)) → APPEND2_IN_AGG(X2, X, P)
APPEND2_IN_AGG(.(X, Xs), Ys, .(X, Zs)) → U2_AGG(X, Xs, Ys, Zs, append2_in_agg(Xs, Ys, Zs))
APPEND2_IN_AGG(.(X, Xs), Ys, .(X, Zs)) → APPEND2_IN_AGG(Xs, Ys, Zs)
sublist_in_gg(X, Y) → U3_gg(X, Y, append1_in_aag(P, X1, Y))
append1_in_aag([], Ys, Ys) → append1_out_aag([], Ys, Ys)
append1_in_aag(.(X, Xs), Ys, .(X, Zs)) → U1_aag(X, Xs, Ys, Zs, append1_in_aag(Xs, Ys, Zs))
U1_aag(X, Xs, Ys, Zs, append1_out_aag(Xs, Ys, Zs)) → append1_out_aag(.(X, Xs), Ys, .(X, Zs))
U3_gg(X, Y, append1_out_aag(P, X1, Y)) → U4_gg(X, Y, append2_in_agg(X2, X, P))
append2_in_agg([], Ys, Ys) → append2_out_agg([], Ys, Ys)
append2_in_agg(.(X, Xs), Ys, .(X, Zs)) → U2_agg(X, Xs, Ys, Zs, append2_in_agg(Xs, Ys, Zs))
U2_agg(X, Xs, Ys, Zs, append2_out_agg(Xs, Ys, Zs)) → append2_out_agg(.(X, Xs), Ys, .(X, Zs))
U4_gg(X, Y, append2_out_agg(X2, X, P)) → sublist_out_gg(X, Y)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
SUBLIST_IN_GG(X, Y) → U3_GG(X, Y, append1_in_aag(P, X1, Y))
SUBLIST_IN_GG(X, Y) → APPEND1_IN_AAG(P, X1, Y)
APPEND1_IN_AAG(.(X, Xs), Ys, .(X, Zs)) → U1_AAG(X, Xs, Ys, Zs, append1_in_aag(Xs, Ys, Zs))
APPEND1_IN_AAG(.(X, Xs), Ys, .(X, Zs)) → APPEND1_IN_AAG(Xs, Ys, Zs)
U3_GG(X, Y, append1_out_aag(P, X1, Y)) → U4_GG(X, Y, append2_in_agg(X2, X, P))
U3_GG(X, Y, append1_out_aag(P, X1, Y)) → APPEND2_IN_AGG(X2, X, P)
APPEND2_IN_AGG(.(X, Xs), Ys, .(X, Zs)) → U2_AGG(X, Xs, Ys, Zs, append2_in_agg(Xs, Ys, Zs))
APPEND2_IN_AGG(.(X, Xs), Ys, .(X, Zs)) → APPEND2_IN_AGG(Xs, Ys, Zs)
sublist_in_gg(X, Y) → U3_gg(X, Y, append1_in_aag(P, X1, Y))
append1_in_aag([], Ys, Ys) → append1_out_aag([], Ys, Ys)
append1_in_aag(.(X, Xs), Ys, .(X, Zs)) → U1_aag(X, Xs, Ys, Zs, append1_in_aag(Xs, Ys, Zs))
U1_aag(X, Xs, Ys, Zs, append1_out_aag(Xs, Ys, Zs)) → append1_out_aag(.(X, Xs), Ys, .(X, Zs))
U3_gg(X, Y, append1_out_aag(P, X1, Y)) → U4_gg(X, Y, append2_in_agg(X2, X, P))
append2_in_agg([], Ys, Ys) → append2_out_agg([], Ys, Ys)
append2_in_agg(.(X, Xs), Ys, .(X, Zs)) → U2_agg(X, Xs, Ys, Zs, append2_in_agg(Xs, Ys, Zs))
U2_agg(X, Xs, Ys, Zs, append2_out_agg(Xs, Ys, Zs)) → append2_out_agg(.(X, Xs), Ys, .(X, Zs))
U4_gg(X, Y, append2_out_agg(X2, X, P)) → sublist_out_gg(X, Y)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
APPEND2_IN_AGG(.(X, Xs), Ys, .(X, Zs)) → APPEND2_IN_AGG(Xs, Ys, Zs)
sublist_in_gg(X, Y) → U3_gg(X, Y, append1_in_aag(P, X1, Y))
append1_in_aag([], Ys, Ys) → append1_out_aag([], Ys, Ys)
append1_in_aag(.(X, Xs), Ys, .(X, Zs)) → U1_aag(X, Xs, Ys, Zs, append1_in_aag(Xs, Ys, Zs))
U1_aag(X, Xs, Ys, Zs, append1_out_aag(Xs, Ys, Zs)) → append1_out_aag(.(X, Xs), Ys, .(X, Zs))
U3_gg(X, Y, append1_out_aag(P, X1, Y)) → U4_gg(X, Y, append2_in_agg(X2, X, P))
append2_in_agg([], Ys, Ys) → append2_out_agg([], Ys, Ys)
append2_in_agg(.(X, Xs), Ys, .(X, Zs)) → U2_agg(X, Xs, Ys, Zs, append2_in_agg(Xs, Ys, Zs))
U2_agg(X, Xs, Ys, Zs, append2_out_agg(Xs, Ys, Zs)) → append2_out_agg(.(X, Xs), Ys, .(X, Zs))
U4_gg(X, Y, append2_out_agg(X2, X, P)) → sublist_out_gg(X, Y)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
APPEND2_IN_AGG(.(X, Xs), Ys, .(X, Zs)) → APPEND2_IN_AGG(Xs, Ys, Zs)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
↳ PiDP
APPEND2_IN_AGG(Ys, .(X, Zs)) → APPEND2_IN_AGG(Ys, Zs)
From the DPs we obtained the following set of size-change graphs:
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
APPEND1_IN_AAG(.(X, Xs), Ys, .(X, Zs)) → APPEND1_IN_AAG(Xs, Ys, Zs)
sublist_in_gg(X, Y) → U3_gg(X, Y, append1_in_aag(P, X1, Y))
append1_in_aag([], Ys, Ys) → append1_out_aag([], Ys, Ys)
append1_in_aag(.(X, Xs), Ys, .(X, Zs)) → U1_aag(X, Xs, Ys, Zs, append1_in_aag(Xs, Ys, Zs))
U1_aag(X, Xs, Ys, Zs, append1_out_aag(Xs, Ys, Zs)) → append1_out_aag(.(X, Xs), Ys, .(X, Zs))
U3_gg(X, Y, append1_out_aag(P, X1, Y)) → U4_gg(X, Y, append2_in_agg(X2, X, P))
append2_in_agg([], Ys, Ys) → append2_out_agg([], Ys, Ys)
append2_in_agg(.(X, Xs), Ys, .(X, Zs)) → U2_agg(X, Xs, Ys, Zs, append2_in_agg(Xs, Ys, Zs))
U2_agg(X, Xs, Ys, Zs, append2_out_agg(Xs, Ys, Zs)) → append2_out_agg(.(X, Xs), Ys, .(X, Zs))
U4_gg(X, Y, append2_out_agg(X2, X, P)) → sublist_out_gg(X, Y)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
APPEND1_IN_AAG(.(X, Xs), Ys, .(X, Zs)) → APPEND1_IN_AAG(Xs, Ys, Zs)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
APPEND1_IN_AAG(.(X, Zs)) → APPEND1_IN_AAG(Zs)
From the DPs we obtained the following set of size-change graphs: